//
//  HomeTableViewController.swift
//  sinaWeibo
//
//  Created by liii on 16/6/20.
//  Copyright © 2016年 liii. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

// 重用标示符
private let homeCellIdentifier = "homeCellIdentifier"

class HomeTableViewController: BaseTableViewController {
    
    // 模型数组
    var statuses = [Status]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 用户未登陆显示访客视图
        showVisitorViewIfUserNotLogin()
        // 用户已登陆显示首页视图
        showHomeViewIfUserHasLogin()
    }
    
    // 如果用户未登录
    private func showVisitorViewIfUserNotLogin() {
        // 如果用户没有登录
        if !userLogin {
            // 就显示访客视图
            visitorView?.setVisitorWith("爱的世界发掘的弗拉健康的垃圾发垃圾袋阿拉丁是加法", imageName: nil)
            // 且不再向下执行
            return
        }
    }
    
    // 如果用户已经登录
    private func showHomeViewIfUserHasLogin() {
        // 注册Cell
        registerHomeCell()
        // 并加载数据
        loadData()
    }

    // 注册Cell
    private func registerHomeCell() {

        /*
         * OC中获取Cell类型: [UITableViewCell class]
         * Swift中获取Cell类型: UITableViewCell.self
         * ? 代表如果tableView的值为nil, 后边的调用就不执行(用户未登录的时候, 视图为VisitorView, 认证成功之后, 视图才是tableView)
        */
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: homeCellIdentifier)
        // 预估行高 No.1
        tableView.estimatedRowHeight = 300
        // 固定行高 No.2
        tableView.rowHeight = UITableViewAutomaticDimension
    }
    
    // 发送网络请求, 加载数据
    private func loadData() {
        // 调用
        Status.loadHomeData { (dict) -> () in
            
            // 过滤dict为空的情况
            guard let list = dict else {
                SVProgressHUD.showErrorWithStatus(appErrorTip)
                return
            }
            // 存放到模型数组
            self.statuses = list
            // 刷新表格
            self.tableView.reloadData()
        }
    }
}

// UITableView数据源方法
extension HomeTableViewController {

    // Rows
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statuses.count
    }
    // Cell
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
//        // iOS 6.0 以前的写法(淘汰)
//        var cell = tableView.dequeueReusableCellWithIdentifier(homeCellIdentifier)
//        if(cell == nil) {
//            cell = UITableViewCell(style: .Default, reuseIdentifier: homeCellIdentifier)
//        }
        
        // iOS 6.0以后的写法
        let cell = tableView.dequeueReusableCellWithIdentifier(homeCellIdentifier, forIndexPath: indexPath) as! StatusCell
        
        let status = statuses[indexPath.row]
        // 把模型数据传递给自定义Cell
        cell.status = status
        
        return cell
    }
    
}
